import pandas as pd

df = pd.read_csv('iris.csv', index_col='kkk')
print(df.head(n=5))  # 前五，n默认为5
print(df.tail())  # 后五
print(df.drop(columns='Sepal.Length'))  # 删除指定列
print(df.drop('Sepal.Length', axis=1))  # 同上
print(df.drop(index=2, errors='ignore'))  # 删除指定行
print(df.drop(2, errors='ignore'))  # 同上
# 查看数据缺失的列
print(df.isnull().any())  # any(axis=0)默认是0
# 查看数据缺失的行
print(df.isnull().any(axis=1))
# 查看数据缺失
print(df[df.isnull().any(axis=1)])
#
print(df[df.isnull().any(axis=1)]['Sepal.Length'].unique())
#
df[df.isnull().any(axis=1)].loc[df['Sepal.Width'] == 3.0, 'Sepal.Length'] = 100
"""
上面的操作并不会赋值成功
1.原因是”尝试在DataFrame一个切片的副本上进行赋值“会有错误
2.任何赋值都不会创建副本，以下这个操作只是取了个名字，其实还是只想原来的内存
"""
tmp = df[df.isnull().any(axis=1)]
print(tmp)
tmp1 = df[df.isnull().any(axis=1)].copy()
tmp1.loc[df['Sepal.Width'] == 3.0, 'Sepal.Length'] = 100
print(tmp1)
df[df.isnull().any(axis=1)] = tmp1
print(df[df.isnull().any(axis=1)])
print(df)
# 筛选
print(df.query('`Sepal.Length`==5.1 & `Sepal.Width`>3.0'))
df.set_index(keys=['Sepal.Length'], inplace=True)
print(df)
"""
# 替换掉温度的后缀℃
df.loc[:, "bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
"""
